using System.Collections.Generic;
using CLELCore.Assembly.BlobStreams;
using CLELCore.Assembly.Debug;

namespace CLELCore.Assembly
{
	public class AssemblyTextSection
	{
		private EntryPointRVA _entry_point_rva;
		private ImportTable _import_table;
		private ImportAddressTable _import_address_table;
		private ImportLookupTable _import_lookup_table;
		private NameTable _name_table;
		private CLIHeader _cli_header;
		private MetadataRoot _metadata_root;
		private StreamHeaders _stream_headers;
		private PoundTildaStream _pound_tilda_stream;
		private StringsStream _strings_stream;
		private GUIDStream _guid_stream;
		private USStream _us_stream;
		private BlobStream _blob_stream;
		private List<MethodHeader> _method_headers;
		private List<CLIResource> _cli_resources;
		private DebugDirectory _debug_directory;
		private byte[] _strong_name_signature;

		public EntryPointRVA EntryPointRVA
		{
			get
			{
				return _entry_point_rva;
			}
			set
			{
				_entry_point_rva = value;
			}
		}
		public ImportTable ImportTable
		{
			get
			{
				return _import_table;
			}
			set
			{
				_import_table = value;
			}
		}
		public ImportAddressTable ImportAddressTable
		{
			get
			{
				return _import_address_table;
			}
			set
			{
				_import_address_table = value;
			}
		}
		public ImportLookupTable ImportLookupTable
		{
			get
			{
				return _import_lookup_table;
			}
			set
			{
				_import_lookup_table = value;
			}
		}
		public NameTable NameTable
		{
			get
			{
				return _name_table;
			}
			set
			{
				_name_table = value;
			}
		}
		public CLIHeader CLIHeader
		{
			get
			{
				return _cli_header;
			}
			set
			{
				_cli_header = value;
			}
		}
		public MetadataRoot MetadataRoot
		{
			get
			{
				return _metadata_root;
			}
			set
			{
				_metadata_root = value;
			}
		}
		public StreamHeaders StreamHeaders
		{
			get
			{
				return _stream_headers;
			}
			set
			{
				_stream_headers = value;
			}
		}
		public PoundTildaStream PoundTildaStream
		{
			get
			{
				return _pound_tilda_stream;
			}
			set
			{
				_pound_tilda_stream = value;
			}
		}
		public StringsStream StringsStream
		{
			get
			{
				return _strings_stream;
			}
			set
			{
				_strings_stream = value;
			}
		}
		public GUIDStream GUIDStream
		{
			get
			{
				return _guid_stream;
			}
			set
			{
				_guid_stream = value;
			}
		}
		public USStream USStream
		{
			get
			{
				return _us_stream;
			}
			set
			{
				_us_stream = value;
			}
		}
		public BlobStream BlobStream
		{
			get
			{
				return _blob_stream;
			}
			set
			{
				_blob_stream = value;
			}
		}
		
		public List<MethodHeader> MethodHeaders
		{
			get
			{
				return _method_headers;
			}
			set
			{
				_method_headers = value;
			}
		}

		public List<CLIResource> CLIResources
		{
			get
			{
				return _cli_resources;
			}
			set
			{
				_cli_resources = value;
			}
		}

		public DebugDirectory DebugDirectory
		{
			get
			{
				return _debug_directory;
			}
			set
			{
				_debug_directory = value;
			}
		}

		public byte[] StrongNameSignature
		{
			get
			{
				return _strong_name_signature;
			}
			set
			{
				_strong_name_signature = value;
			}
		}
		
		public AssemblyTextSection()
		{
		}
	}
}
